home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FishMarket 1.0
/
FishMarket v1.0.iso
/
fishies
/
376-400
/
disk_376
/
toollibrary
/
src
/
toollibrary.asm
< prev
next >
Wrap
Assembly Source File
|
1992-05-06
|
7KB
|
398 lines
* 07.02.90: a6 wurde in der Library verändert, dadurch Absturz, wenn
* der Compiler annahm, daß a6 noch unverändert war. Bis auf
* Create/DeleteExt/StdIO beseitigt. Alles andere mit -ml
* compiliert. Stof.c so angepaßt, daß mit -O compiliert werden
* kann. Abfrage der einzelnen Funktionen wurde auf switch um-
* geschrieben.
* 23.03.90: NewRequest angefügt.
* 28.03.90: Neuer Parser (a-e x und pi durch switch erreicht
* 07.04.90: Alle Konstanten werden erkannt.
* 30.05.90: left/right/mid/Umwftos umgewandelt, jetzt mit Zielangabe.
* Neue Funktionen. RastPort jetzt immer in A1
* 10.06.90: left/right etc. auf VOID abgeändert, Calc_P auf LONG.
* 11.07.90: IntuitionBase etc. über ToolBase erreichbar. SimpleMenu angefügt.
* 03.08.90: -fi, SetDrMd in Print beseitigt
include "exec/types.i"
include "exec/initializers.i"
include "exec/libraries.i"
include "exec/lists.i"
include "exec/resident.i"
include "exec/strings.i"
include "libraries/dos.i"
include "exec/io.i"
_LVOCloseLibrary equ -414
_LVOOpenLibrary equ -552
_LVORemove equ -252
_LVOFreeMem equ -210
callsys macro
jsr _LVO\1(a6)
endm
xlib macro
xref _LVO\1
endm
* Die vorhandenen Funktionen
xref _berechnen
xref _request
xref _copy
xref _check
xref _checkback
xref _AnzahlKlammern
xref _left
xref _right
xref _mid
xref _UmwStoF
xref _Fak
xref _NuK
xref _EventAbfrage
xref _CreatePort
xref _DeletePort
xref _CreateExtIO
xref _DeleteExtIO
xref _CreateStdIO
xref _DeleteStdIO
xref _UmwFtoS
xref _Print
xref _Free_Konst
xref _Init_Konst
xref _Set_Konst_P
xref _Init_Mem
xref _Free_Block
xref _Init_Block
xref _PreCalc
xref _GetKonst_P
xref _Calc_P
xref _NewRequest
xref _Box
xref _Center
xref _Gadget_On
xref _Gadget_Off
xref _GetPropPosH
xref _GetPropPosV
xref _SetPropPosH
xref _SetPropPosV
xref _PrepareTmpRas
xref _ClearTmpRas
xref _PrepareArea
xref _ClearArea
xref _LastMenu
xref _LastItem
xref _LastSub
xref _AddMenu
xref _AddItem
xref _AddSub
xref _GetItem
xref _ClearMenu
xref _FreeItem
xref _FreeMenu
xref _NewSetMenuStrip
xlib FreeMem
xlib Remove
xlib OpenLibrary
xlib CloseLibrary
xdef _SysBase
xdef _IntuitionBase
xdef _GfxBase
xdef _MathIeeeDoubBasBase
xdef _MathIeeeDoubTransBase
VERSION equ 14
REVISION equ 3
STRUCTURE TestBase,LIB_SIZE
BPTR extin_SegList
APTR extin_SysBase
APTR extin_GfxBase
APTR extin_IntuitionBase
APTR extin_MathIeeeDoubBasBase
APTR extin_MathIeeeDoubTransBase
Label extin_SIZEOF
TESTLIBNAME macro
dc.b 'tool.library',0
endm
SECTION "Code",CODE
moveq #RETURN_FAIL,d0
rts
ROMTag:
dc.w RTC_MATCHWORD
dc.l ROMTag
dc.l EndCode
dc.b RTF_AUTOINIT
dc.b VERSION
dc.b NT_LIBRARY
dc.b 0
dc.l libraryName
dc.l idString
dc.l Init
libraryName:
TESTLIBNAME
cnop 0,2
idString:
dc.b 'ToolLibrary 2.06 03-Aug-1990',CR,LF,0
cnop 0,2
gfxName:
dc.b 'graphics.library',0
cnop 0,2
intName:
dc.b 'intuition.library',0
mabName:
dc.b 'mathieeedoubbas.library',0
matName:
dc.b 'mathieeedoubtrans.library',0
cnop 0,2
Init:
dc.l extin_SIZEOF
dc.l funcTable
dc.l dataTable
dc.l .InitLib
funcTable:
dc.l .OpenLib
dc.l .CloseLib
dc.l .ExpungeLib
dc.l .ExtFuncLib
dc.l _left
dc.l _right
dc.l _mid
dc.l _UmwFtoS
dc.l _copy
dc.l _check
dc.l _checkback
dc.l _AnzahlKlammern
dc.l _request
dc.l _NewRequest
dc.l _EventAbfrage
dc.l _Print
dc.l _Box
dc.l _Center
dc.l _Gadget_On
dc.l _Gadget_Off
dc.l _GetPropPosH
dc.l _GetPropPosV
dc.l _SetPropPosH
dc.l _SetPropPosV
dc.l _PrepareTmpRas
dc.l _ClearTmpRas
dc.l _PrepareArea
dc.l _ClearArea
dc.l _UmwStoF
dc.l _Fak
dc.l _NuK
dc.l _berechnen
dc.l _Init_Konst
dc.l _Init_Mem
dc.l _Init_Block
dc.l _Set_Konst_P
dc.l _GetKonst_P
dc.l _PreCalc
dc.l _Calc_P
dc.l _Free_Konst
dc.l _Free_Block
dc.l .CreatePort
dc.l .DeletePort
dc.l .CreateExtIO
dc.l .DeleteExtIO
dc.l .CreateStdIO
dc.l .DeleteStdIO
dc.l _LastMenu
dc.l _LastItem
dc.l _LastSub
dc.l _AddMenu
dc.l _AddItem
dc.l _AddSub
dc.l _GetItem
dc.l _ClearMenu
dc.l _FreeItem
dc.l _FreeMenu
dc.l _NewSetMenuStrip
dc.l -1
dataTable:
INITBYTE LH_TYPE,NT_LIBRARY
INITLONG LN_NAME,libraryName
INITBYTE LIB_FLAGS,LIBF_SUMUSED!LIBF_CHANGED
INITWORD LIB_VERSION,VERSION
INITWORD LIB_REVISION,REVISION
INITLONG LIB_IDSTRING,idString
dc.l 0
.InitLib:
move.l a5,-(sp)
movea.l d0,a5
move.l a0,extin_SegList(a5)
lea gfxName(pc),a1
moveq #LIBRARY_VERSION,d0
callsys OpenLibrary
tst d0
beq.s 1$
move.l d0,_GfxBase
move.l d0,extin_GfxBase(a5)
lea intName(pc),a1
moveq #LIBRARY_VERSION,d0
callsys OpenLibrary
tst d0
beq.s 1$
move.l d0,_IntuitionBase
move.l d0,extin_IntuitionBase(a5)
lea mabName(pc),a1
moveq #LIBRARY_VERSION,d0
callsys OpenLibrary
tst d0
beq.s 1$
move.l d0,_MathIeeeDoubBasBase
move.l d0,extin_MathIeeeDoubBasBase(a5)
lea matName(pc),a1
moveq #LIBRARY_VERSION,d0
callsys OpenLibrary
tst d0
beq.s 1$
move.l d0,_MathIeeeDoubTransBase
move.l d0,extin_MathIeeeDoubTransBase(a5)
move.l a6,extin_SysBase(a5)
move.l a6,_SysBase
move.l a5,d0
1$ movea.l (sp)+,a5
rts
.OpenLib:
addq.w #1,LIB_OPENCNT(a6)
bclr #LIBB_DELEXP,LIB_FLAGS(a6)
move.l a6,d0
rts
.CloseLib:
moveq #0,d0
subq.w #1,LIB_OPENCNT(a6)
bne.s 1$
btst #LIBB_DELEXP,LIB_FLAGS(a6)
beq.s 1$
bsr.s .ExpungeLib
1$ rts
.ExpungeLib:
movem.l d2/a5/a6,-(sp)
tst.w LIB_OPENCNT(a6)
beq.s 1$
bset #LIBB_DELEXP,LIB_FLAGS(a6)
moveq #0,d0
bra.s 2$
1$ move.l a6,a5
move.l extin_SysBase(a5),a6
movea.l extin_GfxBase(a5),a1
callsys CloseLibrary
movea.l extin_IntuitionBase(a5),a1
callsys CloseLibrary
movea.l extin_MathIeeeDoubBasBase(a5),a1
callsys CloseLibrary
movea.l extin_MathIeeeDoubTransBase(a5),a1
callsys CloseLibrary
move.l a5,a1
callsys Remove
move.l extin_SegList(a5),d2
movea.l a5,a1
moveq #0,d0
move.w LIB_NEGSIZE(a5),d0
suba.l d0,a1
add.w LIB_POSSIZE(a5),d0
callsys FreeMem
move.l d2,d0
2$ movem.l (sp)+,d2/a5/a6
rts
.ExtFuncLib:
moveq #0,d0
rts
* Konvertierungsroutinen (Parameter aus den Registern auf den Stack)
.CreatePort
move.l a6,-(sp)
move.l d0,-(a7)
move.l a0,-(a7)
jsr _CreatePort
add.l #8,sp
move.l (sp)+,a6
rts
.DeletePort
move.l a6,-(sp)
move.l a0,-(a7)
jsr _DeletePort
addq.l #4,sp
move.l (sp)+,a6
rts
* Die Funktionen sind gleich, StdIO benutzt feste Speichergröße
.CreateStdIO
moveq #IOSTD_SIZE,d0
.CreateExtIO
move.l d0,-(a7)
move.l a0,-(a7)
jsr _CreateExtIO
add.l #8,sp
rts
* Die Funktionen sind gleich, StdIO benutzt feste Speichergröße
.DeleteStdIO
moveq #IOSTD_SIZE,d0
.DeleteExtIO
move.l a0,-(a7)
jsr _DeleteExtIO
addq.l #4,sp
rts
EndCode:
section "data2",bss
* Die öffentlichen Symbole
_SysBase ds.l 1
_GfxBase ds.l 1
_IntuitionBase ds.l 1
_MathIeeeDoubBasBase ds.l 1
_MathIeeeDoubTransBase ds.l 1
end